package com.example.javapracticaltraining.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.javapracticaltraining.entity.pojo.Elderly;
import com.example.javapracticaltraining.entity.vo.request.ElderlyRequestVO;
import com.example.javapracticaltraining.entity.vo.response.ElderlyResponseVO;

import java.util.Date;
import java.util.List;

/**
* @author night
* @description 针对表【elderly】的数据库操作Service
* @createDate 2025-07-01 18:05:33
*/
public interface ElderlyService extends IService<Elderly> {

    /**
     * 根据ID获取老人信息
     * @param elderlyId 老人ID
     * @return 老人信息
     */
    ElderlyResponseVO getElderlyById(Integer elderlyId);

    /**
     * 分页查询老人信息
     * @param page 分页参数
     * @param name 姓名（可选）
     * @param status 状态（可选）
     * @param roomNumber 房间号（可选）
     * @return 分页结果
     */
    IPage<ElderlyResponseVO> pageElderly(Page<Elderly> page, String name, String status, String roomNumber);

    /**
     * 创建老人信息（入住）
     * @param requestVO 老人信息请求
     * @return 创建的老人信息
     */
    ElderlyResponseVO createElderly(ElderlyRequestVO requestVO);

    /**
     * 更新老人信息
     * @param requestVO 老人信息请求
     * @return 更新后的老人信息
     */
    ElderlyResponseVO updateElderly(ElderlyRequestVO requestVO);

    /**
     * 老人退住
     * @param elderlyId 老人ID
     * @param dischargeDate 退住日期
     * @return 是否成功
     */
    boolean dischargeElderly(Integer elderlyId, Date dischargeDate);
}
